package fire

import (
	// 	"fmt"
	// 	"golang.org/x/sys/windows/registry"
	// 	"log"
	// 	"os/exec"
	"feishup2pclient/msg"
	"os/exec"
	"strings"
)

// 关闭防火墙
func CloseFirewall() {
	// 打开注册表项
	// k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile`, registry.ALL_ACCESS)
	// if err != nil {
	// 	log.Fatal(err)
	// }
	// defer k.Close()

	// // 获取当前防火墙状态
	// value, _, err := k.GetIntegerValue("EnableFirewall")
	// if err != nil {
	// 	log.Fatal(err)
	// }
	// msg.SendMessage("防火墙状态: %v\n", value)
	// fmt.Printf("防火墙状态: %v\n", value)
	// if value == 1 {
	// 	// 关闭防火墙
	// 	err = k.SetDWordValue("EnableFirewall", 0)
	// 	if err != nil {
	// 		log.Fatal(err)
	// 	}
	// 	msg.SendMessage("防火墙已关闭")
	// 	fmt.Println("防火墙已关闭")
	// 	// 关闭防火墙
	// 	disableCmd := exec.Command("netsh", "advfirewall", "set", "allprofiles", "state", "off")
	// 	err = disableCmd.Run()
	// 	if err != nil {
	// 		log.Fatal(err)
	// 	}
	// 	msg.SendMessage("防火墙已关闭")
	// 	fmt.Println("防火墙已关闭")
	// }

}

// 关闭防火墙
func CloseFirewall_a() {
	cmd := exec.Command("netsh", "advfirewall", "set", "allprofiles", "state", "off")
	err := cmd.Run()
	if err != nil {
		msg.SendMessage("防火墙关闭失败")
		// log.Fatal(err)
		return
	}
	msg.SendMessage("Windows 防火墙已关闭")
	// log.Println("Windows 防火墙已关闭")
}

// 打开防火墙
func OpenFirewall_a() {
	cmd := exec.Command("netsh", "advfirewall", "set", "allprofiles", "state", "on")
	err := cmd.Run()
	if err != nil {
		msg.SendMessage("防火墙开启失败")
		// log.Fatal(err)
		return
	}
	msg.SendMessage("Windows 防火墙已打开")
	// log.Println("Windows 防火墙已打开")
}

// 查看防火墙状态
func Firewall_status_a() {
	cmd := exec.Command("netsh", "advfirewall", "show", "allprofiles", "state")
	output, err := cmd.CombinedOutput()
	if err != nil {
		msg.SendMessage("无法查看防火墙状态")
		// log.Fatal(err)
		return
	}
	result := string(output)
	if strings.Contains(result, "State ON") {
		// log.Println("Windows 防火墙当前为打开状态")
		msg.SendMessage("Windows 防火墙当前为打开状态")
	} else if strings.Contains(result, "State OFF") {
		// log.Println("Windows 防火墙当前为关闭状态")
		msg.SendMessage("Windows 防火墙当前为关闭状态")
	} else {
		// log.Println("无法确定 Windows 防火墙的状态")
		msg.SendMessage("无法确定 Windows 防火墙的状态")
	}
}
